//如何开启服务器，以及如何获取用户请求数据，并响应数据
// 1.引入express包，和拥有获取post请求数据api的第三方包body-parser
var express = require('express')
var bodyParser = require('body-parser')
//引入读文件模块
var fs = require('fs')
const { json } = require('body-parser')
// 2.创建你的服务器,也就是原来的http.createServer

var app = express()//这一步相当于原生的http.createServer创建一个服务器操作对象

// 配置使用express-art-template模板引擎,第一个参数表示当渲染以.html结尾的文件的时候使用express-art-template模板加载
app.engine('art', require('express-art-template'))
//虽然不需要配置art-template模板但是还是要安装，因为expres-art-template依赖了art-template
//express默认为response响应对象提供了render方法，但是只有配置了express-art-templat模板引擎之后才能使用

// 配置body-parser包
app.use(bodyParser.urlencoded({ extend: true }))
app.use(bodyParser.json())



//这一步当浏览器通过get请求访问地址为/的时候服务器执行这个回调函数
app.get('/db.json', function (req, res) {
  // res.send('hello express')

  fs.readFile('./db.json', 'utf8', function (err, data) {
    if (err) {
      return res.status(500).send('server err')
    }
    return res.send(JSON.parse(data))
  })
})
//当用户通过post请求/post地址时执行这个回调函数
app.post('/post', function (req, res) {
  return res.send(req.body)
})

//这里设计一个animal数据库的people集合中添加数据的接口，当用户通过post请求/animal地址时执行这个回调函数
app.post('/animal', function (req, res) {
  const type = req.body.type;
  const name = req.body.name;
  const age = req.body.age;
  const sex = req.body.sex;
  const height = req.body.height;
  const add = require('./在node中如何使用mongodb数据库/demo1').add;
  add(type, name, age, sex, height);
  res.send('学生信息保存成功')
  // return res.send(JSON.parse(data))
})

//这里设计一个查询animal数据库的people集合中数据的接口，当用户通过get请求/animal地址时执行这个回调函数
app.get('/animal', function (req, res) {
  const type = req.query.type;
  const search = require('./在node中如何使用mongodb数据库/demo1').search;
  console.log(search(type, function (data) {
    return res.send(data)
  }))
})



// 公开指定目录下的所有资源
// 只要这样做了那这个目录下的所有资源都能被通过/public/xx的形式访问到
app.use('/static/', express.static('./static/'))



// 当浏览器访问3000端口的地址，服务器可以监听到并且在控制台打印这条消息
app.listen(3000, function () {
  console.log('app is running at port 3000')
})